﻿// Copyright (c) egmkang wang. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace XServer.Config
{
    using System;
    using XServer.SDK;

    [ConfigRoot(File = "hero.xml", XmlNode = "hero")]
    public partial class HeroBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "name")]
        public string Name;

        [ConfigElement(Element = "karma1")]
        public int[] Karma1;

        [ConfigElement(Element = "ship_piece")]
        public ValueTuple<int, int> ShipPiece;

        [ConfigElement(Element = "quality")]
        public int Quality;

        [ConfigElement(Element = "job")]
        public int Job;

        [ConfigElement(Element = "country")]
        public int Country;

        [ConfigElement(Element = "sell")]
        public ValueTuple<int, int> Sell;

        [ConfigElement(Element = "talent1")]
        public ValueTuple<int, int>[] Talent1;

        [ConfigElement(Element = "combo")]
        public int[] Combo;

        [ConfigElement(Element = "make_cd")]
        public int MakeCD;

        [ConfigElement(Element = "skill")]
        public ValueTuple<int, int> Skill;

        [ConfigElement(Element = "breakadvancedid")]
        public int BreakAdvancedID;

        [ConfigElement(Element = "fury")]
        public int Fury;

        [ConfigElement(Element = "train_id")]
        public int TrainID;

        public override bool CheckError()
        {
            if (this.Combo == null ||
                (this.Combo.Length > 0 && this.Combo[0] == 0))
            {
                this.Combo = new int[0];
            }
            if (this.Combo.Length > 0 && this.Combo.Length <= 2)
            {
                LoggerProvider.Logger.Error("Load HeroBase, Combo size is {0}", this.Combo.Length);
                return true;
            }

            return false;
        }
    }

    [ConfigRoot(File = "setting.xml", XmlNode = "score")]
    public partial class ScoreBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "coefficient")]
        public int Coefficient;
    }

    [ConfigRoot(File = "setting.xml", XmlNode = "setting")]
    public partial class Setting : IConfig<string>
    {
        [ConfigElement(Element = "param")]
        public string id;
        public override string ID => id;

        [ConfigElement(Element = "value")]
        public int[] value;
    }

    [ConfigRoot(File = "setting.xml", XmlNode = "setting1")]
    public partial class Setting1 : IConfig<string>
    {
        [ConfigElement(Element = "param")]
        public string id;
        public override string ID => id;

        [ConfigElement(Element = "value")]
        public int[] value;
    }

    [ConfigRoot(File = "setting.xml", XmlNode = "setting2")]
    public partial class Setting2 : IConfig<string>
    {
        [ConfigElement(Element = "param")]
        public string id;
        public override string ID => id;

        [ConfigElement(Element = "value")]
        public ValueTuple<int, int>[] value;
    }

    [ConfigRoot(File = "hero.xml", XmlNode = "relation")]
    public partial class RelationBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "hero1_id")]
        public int[] hero1_id;
        [ConfigElement(Element = "equip")]
        public int equip;
        [ConfigElement(Element = "target")]
        public int target;
        [ConfigElement(Element = "pro")]
        public ValueTuple<int, int>[] pro;
    }

    [ConfigRoot(File = "突破.xml", XmlNode = "break_talent")]
    public partial class BreakTalentBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "target")]
        public int target;
        [ConfigElement(Element = "buff_type")]
        public ValueTuple<int, int>[] buff_type;
    }

    [ConfigRoot(File = "突破.xml", XmlNode = "break_advanced")]
    public partial class BreakAdvancedBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "need_hero_lv")]
        public int need_hero_lv;
        [ConfigElement(Element = "coin_cost")]
        public int coin_cost;
        [ConfigElement(Element = "item_cost")]
        public int item_cost;
        [ConfigElement(Element = "hero_cost")]
        public int hero_cost;
        [ConfigElement(Element = "base_attribute")]
        public int[] base_attribute;
        [ConfigElement(Element = "grow_attribute")]
        public int[] grow_attribute;
    }

    [ConfigRoot(File = "道具.xml", XmlNode = "item")]
    public partial class ItemBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "quality")]
        public int quality;
        [ConfigElement(Element = "use")]
        public int use;
        [ConfigElement(Element = "can_lost")]
        public int can_lost;
        [ConfigElement(Element = "max_stack")]
        public long max_stack;
        [ConfigElement(Element = "sell")]
        public ValueTuple<int, int> sell;
        [ConfigElement(Element = "effect")]
        public int effect;
    }

    [ConfigRoot(File = "装备.xml", XmlNode = "equip")]
    public partial class EquipBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "quality")]
        public int quality;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "suit")]
        public int suit;
        [ConfigElement(Element = "baseproperty")]
        public ValueTuple<int, int>[] baseproperty;
        [ConfigElement(Element = "upproperty")]
        public ValueTuple<int, int>[] upproperty;
        [ConfigElement(Element = "refproperty")]
        public ValueTuple<int, int>[] refproperty;
        [ConfigElement(Element = "equip_piece")]
        public ValueTuple<int, int> equip_piece;
        [ConfigElement(Element = "sell")]
        public ValueTuple<int, int> sell;
    }

    [ConfigRoot(File = "装备.xml", XmlNode = "equip_suit")]
    public partial class SuitBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "suit")]
        public int suit;
        [ConfigElement(Element = "num")]
        public int num;
        [ConfigElement(Element = "property")]
        public ValueTuple<int, int>[] property;
    }

    [ConfigRoot(File = "装备.xml", XmlNode = "equip_lvup")]
    public partial class EquipLevelUpBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "green")]
        public ValueTuple<int, int> green;
        [ConfigElement(Element = "blue")]
        public ValueTuple<int, int> blue;
        [ConfigElement(Element = "puple")]
        public ValueTuple<int, int> puple;
        [ConfigElement(Element = "orange")]
        public ValueTuple<int, int> orange;
        [ConfigElement(Element = "red")]
        public ValueTuple<int, int> red;
        [ConfigElement(Element = "gold")]
        public ValueTuple<int, int> gold;
    }

    [ConfigRoot(File = "装备.xml", XmlNode = "equip_reform")]
    public partial class EquipRefineBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "green")]
        public int green;
        [ConfigElement(Element = "blue")]
        public int blue;
        [ConfigElement(Element = "puple")]
        public int puple;
        [ConfigElement(Element = "orange")]
        public int orange;
        [ConfigElement(Element = "red")]
        public int red;
        [ConfigElement(Element = "gold")]
        public int gold;
    }

    [ConfigRoot(File = "装备.xml", XmlNode = "equip_master")]
    public partial class EquipMasterBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "need_lv")]
        public int need_lv;
        [ConfigElement(Element = "property")]
        public ValueTuple<int, int>[] property;
    }

    [ConfigRoot(File = "等级经验.xml", XmlNode = "level_exp")]
    public partial class ExpBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "role_exp")]
        public int role_exp;
        [ConfigElement(Element = "ship2_exp")]
        public int Ship2Exp;
        [ConfigElement(Element = "ship3_exp")]
        public int Ship3Exp;
        [ConfigElement(Element = "ship4_exp")]
        public int Ship4Exp;
        [ConfigElement(Element = "ship5_exp")]
        public int Ship5Exp;
        [ConfigElement(Element = "ship6_exp")]
        public int Ship6Exp;
        [ConfigElement(Element = "add_power")]
        public int AddPower;
        [ConfigElement(Element = "add_energy")]
        public int AddEnergy;
        [ConfigElement(Element = "power_exp")]
        public int PowerExp;
        [ConfigElement(Element = "power_money")]
        public int PowerMoney;
        [ConfigElement(Element = "energy_exp")]
        public int EnergyExp;
        [ConfigElement(Element = "energy_money")]
        public int EnergyMoney;
    }

    [ConfigRoot(File = "等级经验.xml", XmlNode = "vip_exp")]
    public partial class VipExpBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "vip_exp")]
        public int vip_exp;
        [ConfigElement(Element = "equip_double")]
        public int equip_double;
        [ConfigElement(Element = "equip_trible")]
        public int equip_trible;
    }


    [ConfigRoot(File = "航母.xml", XmlNode = "carrier_info")]
    public partial class CarrierBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "quality")]
        public int quality;
        [ConfigElement(Element = "country")]
        public int country;
        [ConfigElement(Element = "fury")]
        public int fury;
        [ConfigElement(Element = "attack")]
        public int attack;
        [ConfigElement(Element = "hit")]
        public int hit;
        [ConfigElement(Element = "crit")]
        public int crit;
        [ConfigElement(Element = "attack_grow")]
        public int attack_grow;
        [ConfigElement(Element = "hit_grow")]
        public int hit_grow;
        [ConfigElement(Element = "crit_grow")]
        public int crit_grow;
        [ConfigElement(Element = "skill")]
        public ValueTuple<int, int> skill;
        [ConfigElement(Element = "slot")]
        public int[] slot;
        [ConfigElement(Element = "plane_type")]
        public int[] plane_type;
        [ConfigElement(Element = "item")]
        public ValueTuple<int, int>[] item;
    }

    [ConfigRoot(File = "航母.xml", XmlNode = "carrier_plane")]
    public partial class CarrierPlaneBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "next_id")]
        public int next_id;
        [ConfigElement(Element = "cost")]
        public ValueTuple<int, int>[] cost;
        [ConfigElement(Element = "extra_carrier")]
        public ValueTuple<int, int>[] extra_carrier;
        [ConfigElement(Element = "extra_ship")]
        public ValueTuple<int, int>[] extra_ship;
    }

    [ConfigRoot(File = "航母.xml", XmlNode = "carrier_position")]
    public partial class CarrierSlotBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "item")]
        public ValueTuple<int, int>[] item;
        [ConfigElement(Element = "money")]
        public ValueTuple<int, int>[] money;
    }

    [ConfigRoot(File = "掉落.xml", XmlNode = "drop")]
    public partial class LootBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "box_id")]
        public int box_id;
        [ConfigElement(Element = "level")]
        public int level;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "value")]
        public int value;
        [ConfigElement(Element = "info")]
        public ValueTuple<int, int, int>[] info;
    }

    [ConfigRoot(File = "副本.xml", XmlNode = "copy_info")]
    public partial class CopyBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "award")]
        public int[] award;
        [ConfigElement(Element = "lose_award")]
        public int[] lose_award;
        [ConfigElement(Element = "first_award")]
        public int[] first_award;
        [ConfigElement(Element = "award_hero")]
        public int award_hero;
        [ConfigElement(Element = "copy_box")]
        public int copy_box;
        [ConfigElement(Element = "normal_card")]
        public int normal_card;
        [ConfigElement(Element = "special_card")]
        public int special_card;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "monster")]
        public int[] monster;
        [ConfigElement(Element = "reinforcement")]
        public int[] reinforcement;
        [ConfigElement(Element = "power")]
        public int power;
        [ConfigElement(Element = "energy")]
        public int energy;
        [ConfigElement(Element = "change_exp")]
        public int change_exp;
        [ConfigElement(Element = "change_money")]
        public int change_money;
        [ConfigElement(Element = "lv")]
        public int lv;
        [ConfigElement(Element = "front_id")]
        public int front_id;
        [ConfigElement(Element = "enter_limit")]
        public int enter_limit;
        [ConfigElement(Element = "times_day")]
        public int times_day;
        [ConfigElement(Element = "times_one")]
        public int times_one;
        [ConfigElement(Element = "star")]
        public int star;
        [ConfigElement(Element = "forbid_day")]
        public int forbid_day;
        [ConfigElement(Element = "mapped_copy_id")]
        public int mapped_copy_id;
        [ConfigElement(Element = "condition")]
        public ValueTuple<int, int> condition;

        public int chapter;
        public int order;
    }

    [ConfigRoot(File = "副本.xml", XmlNode = "copy_chapter")]
    public partial class CopyChapterBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "open_limit")]
        public ValueTuple<int, int>[] open_limit;
        [ConfigElement(Element = "last_chapter")]
        public int last_chapter;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "box")]
        public int box;
        [ConfigElement(Element = "star1")]
        public ValueTuple<int, int>[] star1;
    }

    [ConfigRoot(File = "军舰制造和抽奖.xml", XmlNode = "ship_pack")]
    public partial class ShipPackBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "heroid")]
        public ValueTuple<int, int>[] heroid;
        [ConfigElement(Element = "sum")]
        public int sum;
    }

    [ConfigRoot(File = "军舰制造和抽奖.xml", XmlNode = "ship_rand_lib")]
    public partial class ShipRandLibBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "mat1pack1")]
        public int mat1pack1;
        [ConfigElement(Element = "mat1pack2")]
        public int mat1pack2;
        [ConfigElement(Element = "mat2pack1")]
        public int mat2pack1;
        [ConfigElement(Element = "mat2pack2")]
        public int mat2pack2;
        [ConfigElement(Element = "mat3pack1")]
        public int mat3pack1;
        [ConfigElement(Element = "mat3pack2")]
        public int mat3pack2;
        [ConfigElement(Element = "mat4pack1")]
        public int mat4pack1;
        [ConfigElement(Element = "mat4pack2")]
        public int mat4pack2;
    }

    [ConfigRoot(File = "军舰制造和抽奖.xml", XmlNode = "ship_raffle")]
    public partial class ShipRaffleBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "packs")]
        public int[] packs;
    }

    [ConfigRoot(File = "培养.xml", XmlNode = "train")]
    public partial class TrainBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "cost_item")]
        public int cost_item;
        [ConfigElement(Element = "cost_money")]
        public ValueTuple<int, int> cost_money;
        [ConfigElement(Element = "train")]
        public int train;
        [ConfigElement(Element = "grow")]
        public int grow;
    }

    [ConfigRoot(File = "培养.xml", XmlNode = "train_limit")]
    public partial class TrainLimitBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "hp_max")]
        public ValueTuple<int, int>[] hp_max;
        [ConfigElement(Element = "attack_max")]
        public ValueTuple<int, int>[] attack_max;
        [ConfigElement(Element = "wf_max")]
        public ValueTuple<int, int>[] wf_max;
        [ConfigElement(Element = "ff_max")]
        public ValueTuple<int, int>[] ff_max;
    }

    [ConfigRoot(File = "部队.xml", XmlNode = "army")]
    public partial class ArmyBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "quality")]
        public int quality;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "exp")]
        public int exp;
        [ConfigElement(Element = "can_up")]
        public int can_up;
        [ConfigElement(Element = "can_equip")]
        public int can_equip;
        [ConfigElement(Element = "soldier")]
        public ValueTuple<int, int>[] soldier;
        [ConfigElement(Element = "baseproperty")]
        public ValueTuple<int, int, int>[] baseproperty;
        [ConfigElement(Element = "refproperty")]
        public ValueTuple<int, int>[] refproperty;
        [ConfigElement(Element = "sell")]
        public ValueTuple<int, int> sell;
        [ConfigElement(Element = "probability_player")]
        public int probability_player;
        [ConfigElement(Element = "probability_computer")]
        public int probability_computer;
    }

    [ConfigRoot(File = "部队.xml", XmlNode = "army_level_exp")]
    public partial class ArmyExpBase : IConfigWithIntKey
    {

        [ConfigElement(Element = "green")]
        public int green;
        [ConfigElement(Element = "blue")]
        public int blue;
        [ConfigElement(Element = "puple")]
        public int puple;
        [ConfigElement(Element = "orange")]
        public int orange;
        [ConfigElement(Element = "red")]
        public int red;
        [ConfigElement(Element = "gold")]
        public int gold;
    }

    [ConfigRoot(File = "部队.xml", XmlNode = "army_gaizao_exp")]
    public partial class ArmyRefineBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "cost")]
        public ValueTuple<int, int>[] cost;
        [ConfigElement(Element = "self_cost")]
        public int self_cost;
    }

    [ConfigRoot(File = "商店商城.xml", XmlNode = "shop")]
    public partial class ShopBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "shoptype")]
        public int shoptype;
        [ConfigElement(Element = "item")]
        public ValueTuple<int, int> item;
        [ConfigElement(Element = "moneytype")]
        public int moneytype;
        [ConfigElement(Element = "price")]
        public ValueTuple<int, int>[] price;
        [ConfigElement(Element = "vip")]
        public ValueTuple<int, int, int>[] vip;
        [ConfigElement(Element = "star")]
        public ValueTuple<int, int> star;
        [ConfigElement(Element = "lv_min")]
        public int lv_min;
        [ConfigElement(Element = "weight")]
        public int weight;
        [ConfigElement(Element = "lattice_position")]
        public int lattice_position;
        [ConfigElement(Element = "onsale")]
        public int onsale;
    }

    [ConfigRoot(File = "天命.xml", XmlNode = "fate")]
    public partial class FateBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "cost")]
        public int cost;
        [ConfigElement(Element = "base_value")]
        public int base_value;
        [ConfigElement(Element = "max_value")]
        public int max_value;
        [ConfigElement(Element = "attack_value")]
        public ValueTuple<int, int>[] attack_value;
        [ConfigElement(Element = "hp_value")]
        public ValueTuple<int, int> hp_value;
        [ConfigElement(Element = "huopaodef_value")]
        public ValueTuple<int, int> huopaodef_value;
        [ConfigElement(Element = "daodandef_value")]
        public ValueTuple<int, int> daodandef_value;
    }

    [ConfigRoot(File = "深海探秘.xml", XmlNode = "patrol")]
    public partial class PatrolBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "ship_award")]
        public int ship_award;
        [ConfigElement(Element = "item_award")]
        public int item_award;
        [ConfigElement(Element = "mapped_id")]
        public int mapped_id;
        [ConfigElement(Element = "skill_award")]
        public ValueTuple<int, int>[] skill_award;
        [ConfigElement(Element = "skill_time")]
        public ValueTuple<int, int>[] skill_time;
        [ConfigElement(Element = "skill_cost")]
        public ValueTuple<int, int>[] skill_cost;
    }

    [ConfigRoot(File = "购买次数价格.xml", XmlNode = "cost")]
    public partial class BuyCountCostBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "times")]
        public ValueTuple<int, int>[] times;
        [ConfigElement(Element = "cost")]
        public ValueTuple<int, int>[] cost;
    }

    [ConfigRoot(File = "突袭油田.xml", XmlNode = "cost")]
    public partial class TowerBuffBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "effect_type")]
        public ValueTuple<int, int> effect_type;
        [ConfigElement(Element = "star_num")]
        public int star_num;
    }

    [ConfigRoot(File = "回收.xml", XmlNode = "disassemble")]
    public partial class RecoverBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "type")]
        public ValueTuple<int, int>[] type;
    }

    [ConfigRoot(File = "围剿叛军.xml", XmlNode = "dstrike_trigger")]
    public partial class DstrikeTriggerBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "lv")]
        public int lv;
        [ConfigElement(Element = "main")]
        public ValueTuple<int, int>[] main;
        [ConfigElement(Element = "elite")]
        public ValueTuple<int, int>[] elite;
    }

    [ConfigRoot(File = "围剿叛军.xml", XmlNode = "dstrike_merit_award")]
    public partial class DstrikeMeritAwardBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "lv")]
        public int lv;
        [ConfigElement(Element = "index")]
        public int index;
        [ConfigElement(Element = "merit_num")]
        public int merit_num;
        [ConfigElement(Element = "merit_award")]
        public ValueTuple<int, int> merit_award;
    }

    [ConfigRoot(File = "围剿叛军.xml", XmlNode = "dstrike_rank_award")]
    public partial class DstrikeRankAwardBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "range")]
        public int range;
        [ConfigElement(Element = "damage_rankaward")]
        public ValueTuple<int, int> damage_rankaward;
        [ConfigElement(Element = "merit_rankaward")]
        public ValueTuple<int, int> merit_rankaward;
    }

    [ConfigRoot(File = "围剿叛军.xml", XmlNode = "dstrike_boss")]
    public partial class DstrikeBossBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "lv")]
        public int lv;
        [ConfigElement(Element = "quality")]
        public int quality;
    }

    [ConfigRoot(File = "怪物.xml", XmlNode = "monster_group")]
    public partial class MonsterGroupBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "monster_group")]
        public int[] monster_group;
        [ConfigElement(Element = "skill_lv")]
        public int[] skill_lv;
        [ConfigElement(Element = "monster_lv")]
        public int[] monster_lv;
        [ConfigElement(Element = "quality")]
        public int[] quality;
    }

    [ConfigRoot(File = "怪物.xml", XmlNode = "monster")]
    public partial class MonsterBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "job")]
        public int job;
        [ConfigElement(Element = "country")]
        public int country;
        [ConfigElement(Element = "skill")]
        public ValueTuple<int, int> skill;
        [ConfigElement(Element = "combo")]
        public int[] combo;
        [ConfigElement(Element = "start_buff")]
        public int start_buff;
    }

    [ConfigRoot(File = "签到奖励.xml", XmlNode = "sign")]
    public partial class SignBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "award")]
        public ValueTuple<int, int>[] award;
        [ConfigElement(Element = "vipaward_lv")]
        public int vipaward_lv;
    }

    [ConfigRoot(File = "技能.xml", XmlNode = "buff")]
    public partial class BuffBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "guorp_id")]
        public int guorp_id;
        [ConfigElement(Element = "bufftimes")]
        public int bufftimes;
        [ConfigElement(Element = "target_type")]
        public int target_type;
        [ConfigElement(Element = "target")]
        public int target;
        [ConfigElement(Element = "buff_value_type")]
        public int buff_value_type;
        [ConfigElement(Element = "buff_type")]
        public int buff_type;
        [ConfigElement(Element = "last")]
        public int last;
        [ConfigElement(Element = "targettype")]
        public int targettype;
        [ConfigElement(Element = "times")]
        public int times;
        [ConfigElement(Element = "pro")]
        public int pro;
        [ConfigElement(Element = "pro_type1")]
        public ValueTuple<int, int> pro_type1;
        [ConfigElement(Element = "pro_type2")]
        public ValueTuple<int, int> pro_type2;
        [ConfigElement(Element = "pro_type3")]
        public ValueTuple<int, int> pro_type3;
    }

    [ConfigRoot(File = "技能.xml", XmlNode = "skill")]
    public partial class SkillBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "cd")]
        public int cd;
        [ConfigElement(Element = "times")]
        public int times;
        [ConfigElement(Element = "fury")]
        public int fury;
        [ConfigElement(Element = "fight_type1")]
        public int fight_type1;
        [ConfigElement(Element = "target_type")]
        public int target_type;
        [ConfigElement(Element = "target")]
        public int target;
        [ConfigElement(Element = "carrier_attack_type")]
        public ValueTuple<int, int>[] carrier_attack_type;
        [ConfigElement(Element = "value")]
        public ValueTuple<int, int> value;
        [ConfigElement(Element = "skill_damage")]
        public ValueTuple<int, int>[] skill_damage;
    }

    [ConfigRoot(File = "日常任务与成就.xml", XmlNode = "activity")]
    public partial class ActivityBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "time")]
        public int time;
        [ConfigElement(Element = "reward")]
        public ValueTuple<int, int>[] reward;
        [ConfigElement(Element = "points")]
        public int points;
    }

    [ConfigRoot(File = "日常任务与成就.xml", XmlNode = "activity_reward")]
    public partial class ActivityRewardBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "reward")]
        public ValueTuple<int, int>[] reward;
    }

    [ConfigRoot(File = "日常任务与成就.xml", XmlNode = "achievement")]
    public partial class AchievementBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "time")]
        public int time;
        [ConfigElement(Element = "reward")]
        public ValueTuple<int, int>[] reward;
    }

    [ConfigRoot(File = "军衔.xml", XmlNode = "rank")]
    public partial class RankBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "rank")]
        public int rank;
        [ConfigElement(Element = "add")]
        public ValueTuple<int, int>[] add;
        [ConfigElement(Element = "reward")]
        public ValueTuple<int, int>[] reward;
        [ConfigElement(Element = "cost")]
        public int cost;
        [ConfigElement(Element = "carrier_box")]
        public int carrier_box;
    }

    [ConfigRoot(File = "七日活动.xml", XmlNode = "sevendays")]
    public partial class SevenDaysBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "day")]
        public int day;
        [ConfigElement(Element = "index")]
        public int index;
        [ConfigElement(Element = "type")]
        public int type;
        [ConfigElement(Element = "condition")]
        public int condition;
        [ConfigElement(Element = "reward")]
        public int[] reward;
    }

    [ConfigRoot(File = "援军助威.xml", XmlNode = "support")]
    public partial class SupportBase : IConfigWithIntKey
    {
        [ConfigElement(Element = "need_lv")]
        public int need_lv;
        [ConfigElement(Element = "property")]
        public ValueTuple<int, int>[] property;
    }
}
